package com.chen.springcloud.controller;

import com.chen.springcloud.entity.Dept;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

import java.util.List;

/**
 * @ClassName
 * @Description:    消费者，不应该有 service 层
 *                  RestTemplate …… 里面有很多模板 可以咱直接 调用 {用这个去请求}
 * @Author:
 * @Date: Created in 21:43 2022/5/22
 */
@RestController
@RequestMapping("/deptConsumer")
public class DeptConsumerController {

    /**
     *  ({url:路径（请求地址）},{参数：实体、Map封装:}，{相应的类型: Class<？> responseType})
     *  提供多种便捷访问远程http服务的方法，简单的 Restful 服务模板
     */
    @Autowired
    private RestTemplate restTemplate;

    //定义静态常量： 也就是我们服务提供者的 地址
//    private static final String REST_URL_PREFIX = "http://localhost:8001";
    //Ribbon    这里的地址应该是从服务中取的变量,通过服务名来访问
    private static final String REST_URL_PREFIX = "http://SPRINGCLOUD-PROVIDER-DEPT";


    /**
     *  这里要注意的是，服务提供给我们的什么样的 请求方式 我们调用服务的时候就必须 用什么样的请求方式 要与服务保持一致
     */

    /**
     *  保存部门信息
     * @param dept
     * @return
     */
    @RequestMapping("/saveDeptInfo")
    public Boolean saveDeptInfo(Dept dept){
        return restTemplate.postForObject(REST_URL_PREFIX+"/deptProvider/saveDeptInfo",dept,Boolean.class);
    }

    /**
     *  通过id 查询部门
     * @param id
     * @return
     */
    @RequestMapping("/queryDeptById/{id}")
    public Dept queryDeptById(@PathVariable("id") Integer id){
        return restTemplate.getForObject(REST_URL_PREFIX+"/deptProvider/queryDeptById/"+id,Dept.class);
    }

    /**
     *  查询所有部门
     * @return
     */
    @RequestMapping("/queryDeptAll")
    public List<Dept> queryDeptAll(){
        return restTemplate.getForObject(REST_URL_PREFIX+"/deptProvider/queryDeptAll",List.class);
    }






}
